#if !defined(__DAEMON_SUB_PROCESS_H__)
#define __DAEMON_SUB_PROCESS_H__
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <string.h>
#include <sys/reboot.h>
#include "log.h"
#include "signal.h"

#define MAX_FAILED_COUNT 5
#define EXE_NAME "/usr/bin/gateway"

// 子进程信息的结构体
typedef struct
{
    pid_t pid;  // 进程编号 
    char *sub_cmd; // 子进程的进程名
    int fail_count; // 失败次数
}sub_process_t;

// 初始化自己  填写子进程的相关参数  ： 程序名 参数
sub_process_t *daemon_sub_process_init(char *sub_cmd);

// 检查并启动子进程
// 检查waitpid 根据返回值 和状态 status
// 启动就是用fork execve 启动子进程
int daemon_sub_process_check_and_start(sub_process_t *sub_process);

// 结束子进程
// kill掉
// 回收相关资源
void daemon_sub_process_stop(sub_process_t *sub_process);

#endif